$(function () {
    //需求1：初始化文章分类列表
    // 后面要用：添加/修改/删除 完成后都要重新渲染
    initArtCateList()
    //封装
    function initArtCateList() {
        //发送ajax
        axios({
            method: 'GET',
            url: '/my/article/cates'
        }).then(res => {
            console.log(res.data);
            let layer = layui.layer
            if (res.data.status !== 0) {
                return layer.msg(res.data.message)
            }
            //成功后，直接渲染
            let arr = []
            //遍历返回的数据
            res.data.data.forEach(ele => {
                if (ele.Id < 0) {
                    return
                }
                arr.push(`
                  <tr>
                      <td> ${ele.Id} </td> 
                      <td> ${ele.name} </td> 
                      <td> ${ele.alias} </td> 
                      <td>
                      <button data-id="${ele.Id}" class="btn-edit layui-btn layui-btn-xs">修改</button> 
                      <button data-id="${ele.Id}" class="del-edit layui-btn layui-btn-xs layui-btn-danger">删除</button> 
                      </td>
                  </tr>          
                `)
            });
            //循环之外，进行赋值
            $('tbody').empty().html(arr.join(""))
        })
    }

    //需求2：点击按钮，弹出层，构建form表单
    //定义一个全局变量，接收open()的索引值，将来用于关闭对话框
    let indexAdd = 0
    $('#addBtn').on('click', function () {
        indexAdd = layer.open({
            type: 1,
            title: '添加文章类别',
            area: ['500px', '250px'],
            //将来，content里面要放form表单，所以放到最末尾
            content: `
                 <form id="addForm" class="layui-form" action="">
                     <div class="layui-form-item">
                         <label class="layui-form-label">分类名称</label>
                         <div class="layui-input-block">
                             <input type="text" name="name" required lay-verify="required" placeholder="请输入标题" autocomplete="off"
                                 class="layui-input">
                         </div>
                     </div>
                     <div class="layui-form-item">
                         <label class="layui-form-label">分类别名</label>
                         <div class="layui-input-block">
                             <input type="text" name="alias" required lay-verify="required" placeholder="请输入标题" autocomplete="off"
                                 class="layui-input">
                         </div>
                     </div>
                     <div class="layui-form-item">
                         <div class="layui-input-block">
                             <button class="layui-btn" lay-submit lay-filter="formDemo">确认添加</button>
                             <button type="reset" class="layui-btn layui-btn-primary">重置</button>  
                         </div>
                     </div>
                  </form> `,
        });
    })

    //需求3：添加文章分类-后添加的动态元素，需要使用事件委托/事件代理
    $('body').on('submit', '#addForm', function (e) {
        e.preventDefault()
        //ajax提交
        axios({
            method: 'POST',
            url: '/my/article/addcates',
            //参数通过data属性传递   a=1&b=2&c=3
            data: $(this).serialize()
        }).then(res => {
            if (res.data.status !== 0) {
                return layer.msg(res.data.message)
            }
            //成功：提示，初始化文章分类
            layer.msg('恭喜您，添加文章类别成功!')
            initArtCateList()
            //关闭对话框
            layer.close(indexAdd)
        })

    })

    //需求4:修改分类弹出层
    let indexEdit = 0
    $('tbody').on('click', '.btn-edit', function () {
        //a点击编辑按钮做两件事 1.弹出层
        indexEdit = layer.open({
            type: 1,
            title: '修改文章类别',
            area: ['500px', '250px'],
            //将来，content里面要放form表单，所以放到最末尾
            content: `
                 <form id="editForm" class="layui-form" lay-filter="editForm">
                   
                <!-- 隐藏域，填充Id值，将来修改数据的时候使用 --> 
                 <input type="hidden" name="Id">
                 <div class="layui-form-item">
                         <label class="layui-form-label">分类名称</label>
                         <div class="layui-input-block">
                             <input type="text" name="name" required lay-verify="required" placeholder="请输入标题" autocomplete="off"
                                 class="layui-input">
                         </div>
                     </div>
                     <div class="layui-form-item">
                         <label class="layui-form-label">分类别名</label>
                         <div class="layui-input-block">
                             <input type="text" name="alias" required lay-verify="required" placeholder="请输入标题" autocomplete="off"
                                 class="layui-input">
                         </div>
                     </div>
                     <div class="layui-form-item">
                         <div class="layui-input-block">
                             <button class="layui-btn" lay-submit lay-filter="formDemo">确认修改</button>
                             <button type="reset" class="layui-btn layui-btn-primary">重置</button>  
                         </div>
                     </div>
                  </form> `
        });
        //2.a点击编辑按钮做两件事  赋值
        //获取数据和渲染数据，要写到 .btn-edit的点击事件里面
        let id = $(this).attr('data-id')
        //发送ajax
        axios({
            method: 'GET',
            // /:id:动态参数（路由参数）
            //特点:/不能省略， ：一定要去掉， id是动态变化的
            url: '/my/article/cates/' + id
        }).then(res => {
            // console.log(res);
            if (res.data.status !== 0) {
                return layer.msg(res.data.message)
            }
            //渲染
            layui.form.val('editForm', res.data.data)
        })

    })

    //需求5：修改文章分类
    $('body').on('submit', '#editForm', function (e) {
        e.preventDefault()
        //修改分类
        axios({
            method: 'POST',
            url: '/my/article/updatecate',
            //参数通过data属性传递   a=1&b=2&c=3
            data: $(this).serialize()
        }).then(res => {
            //  console.log(res);
            if (res.data.status !== 0) {
                return layer.msg(res.data.message)
            }
            //成功：提示，初始化文章分类
            layer.msg('恭喜您，修改文章类别成功!')
            initArtCateList()
            //关闭对话框
            layer.close(indexEdit)
        })

    })

    //需求6：删除
    $('tbody').on('click', '.del-edit', function () {
        //获取自定义属性值
        let id = $(this).attr('data-id')
        //弹出询问框
        layer.confirm('确认删除吗?', {
            icon: 3,
            title: '提示'
        }, function (index) {
            //发送ajax
            axios({
                method: 'GET',
                url: '/my/article/deletecate/' + id
            }).then(res => {
                // console.log(res);
                if (res.data.status !== 0) {
                    return layer.msg(res.data.message)
                }
                //成功：提示，初始化文章分类列表
                layer.msg('恭喜您，删除文章类别成功!')
                initArtCateList()
            })
            //关闭询问框
            layer.close(index);
        });
    })
})